<?php
class ClienteController extends AppController
{
	var $name = 'Cliente';
	var $uses = array('Tienda','Integrador','Reporte','Postgres','Cliente','ReporteSql','Logsql','ClienteImpuesto','TipoCliente');
	var $helpers = array('Html','Ajax','Javascript','Vista','Interfaz','Json');
	var $layout =  "ajax";
	var $components = array('Utilitario','Interfaz','Vista','Query'/*,'RequestHandler','DebugKit.Toolbar'*/);

	function beforeFilter()
	{
	  		$this->validar();
	}

	public function index($busq = null) {
		//$this->permisos_menu_individual('Movimientos de Clientees'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->set('busq', $busq);
        $condiciones['Cliente.id >'] = '0';
        $condiciones['Cliente.estatus !='] = 0;
        $filtros = '';

        if(!empty($this->request->data))if(!empty($this->request->data)){
            $filtros = $this->request->data;
            extract($filtros);
        }
        if(!empty($filtros) && isset($vent_filtro)){
            $this->set('opciones', $this->serializador($filtros, 2));
            if(!empty($documento))
                $condiciones['Cliente.documento ILIKE'] = "%$documento%";
            if(!empty($nombre))
                $condiciones['Cliente.nombre ILIKE'] = "%$nombre%";
            if(!empty($codigo)){
               // $condiciones['Cliente.codigo ILIKE'] = "%$codigo%";
               // $condiciones['Cliente.codigo_sap ILIKE'] = "%$codigo%";
                $condiciones['OR'] = array(array('Cliente.codigo ILIKE'=> "%$codigo%"), 
                                     array('Cliente.nombre ILIKE'=> "%$codigo%"));
            }
            if(!empty($tipo_cliente_id))
                $condiciones['Cliente.tipo_cliente_id'] = $tipo_cliente_id; 
            if(!empty($credito))
                $condiciones['Cliente.credito'] = $credito; 
            if(!empty($estatus)){
                $condiciones['Cliente.estatus'] = $estatus;
                unset($condiciones['Cliente.estatus !=']);
            }
            if(!empty($estado_id))
                $condiciones['Cliente.estado_id'] = $estado_id;
            if(!empty($municipio_id))
                $condiciones['Cliente.municipio_id'] = $municipio_id;
            if(!empty($parroquia_id))
                $condiciones['Cliente.parroquia_id'] = $parroquia_id;
        }
        $data = $this->Cliente->find('all', array('conditions' => $condiciones, 'order' => 'Cliente.nombre', 'limit' => MAX_PAGI));
        $mostrar = (count($data) > MAX_PAGI) ? MAX_PAGI : count($data);
        $this->set('data', $data);
        $this->Vista->title("Listado de Clientes");
        if(isset($vent_filtro))
            $this->Vista->cerrar_ventana($vent_filtro);

	}

	public function nuevo(){
	   $listaTipos = $this->TipoCliente->find('list', array('fields' => 'TipoCliente.id, TipoCliente.nombre', 'conditions' => array('TipoCliente.id >' => '0', 'TipoCliente.estatus' => 1), 'order' => 'TipoCliente.nombre'));	    
       $this->set('listaTipos', $listaTipos); 
       $this->set('listaEstados',$this->Utilitario->lista_estados());  
    }

	public function modificar($id = null){
       	//$this->permisos_menu_individual('Movimientos de Clientees'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $data = $this->request->data;
        if (!empty($data)) {
            if (!$this->Vista->empyt($data, array('correo','celular','telefono'))) {
                extract($data);
                $id = $this->Interfaz->id($id_cliente);
                if (!$this->Vista->verifica('Cliente', 'documento', $this->Utilitario->mayuscula($this->Interfaz->cedulasinguion($documento)), 'documento')) {   
	                $this->Cliente->query('BEGIN WORK');
	                $datos['Cliente']['id'] = $id;
	                $datos['Cliente']['tipo_doc']=$tipo_doc;
                    $datos['Cliente']['documento']=$this->Utilitario->mayuscula($this->Interfaz->cedulasinguion($documento));
                    $datos['Cliente']['nombre']=$this->Utilitario->mayuscula($nombre);
                    $datos['Cliente']['correo']=$this->Utilitario->mayuscula($correo);
                    $datos['Cliente']['celular']=$celular;
                    $datos['Cliente']['correo']=$correo;
                    $datos['Cliente']['tipo_cliente_id']=$tipo_cliente_id;
                    $datos['Cliente']['credito']=$credito;
                    $datos['Cliente']['estado_id']=$estado_id;
                    $datos['Cliente']['municipio_id']=$municipio_id;
                    $datos['Cliente']['parroquia_id']=$parroquia_id;
                    $datos['Cliente']['direccion']=$this->Utilitario->mayuscula($direccion);
                    $datos['Cliente']['usuario_id']=$this->Interfaz->id($_SESSION['usuario_id']);
                    $datos['Cliente']['tienda_id']=$tienda_id;
	                if ($this->Cliente->save($datos)) {
	                    $this->Cliente->query('COMMIT');
	                    $this->Vista->mensaje("Guardado Exitosamente", 'EXITO');
	                    $this->log();
	                    $this->Vista->cerrar_ventana($vent);
	                } else {
	                    $this->Cliente->query('ROLLBACK');
	                    $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR', 'codigo');
	                }
   
                }
                else
                    $this->Vista->mensaje("C&oacute;digo duplicado", 'ERROR');
        }
        else
            $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
        $this->index();
        $this->render('index');
        } 
        else {
            $id = $this->Interfaz->id($id);
            if (is_numeric($id)) {
                $datos = $this->Cliente->find('first', array('conditions' => array('Cliente.id' => $id)));       
                $this->set('data', $datos);
                $listaTipos = $this->TipoCliente->find('list', array('fields' => 'TipoCliente.id, TipoCliente.nombre', 'conditions' => array('TipoCliente.id >' => '0', 'TipoCliente.estatus' => 1), 'order' => 'TipoCliente.nombre'));        
                $this->set('listaTipos', $listaTipos); 
                $this->set('listaEstados',$this->Utilitario->lista_estados());
                $this->set('listaMunicipios',$this->Utilitario->lista_municipios($datos['Cliente']['estado_id']));  
                $this->set('listaParroquias',$this->Utilitario->lista_parroquias($datos['Cliente']['municipio_id']));  

            } else {
                $this->Vista->mensaje("Cliente Inv&aacute;lido", 'ERROR');
                $this->render("../" . PRINCIPAL . "/mensajes");
            }
        }
    }


    public function guardar($vent=null) {
	//	$this->permisos_accion_individual('unidad','nuevo','estatus'); // mensaje que se quiere mostrar
		$data=$this->request->data;
        if(!$this->Vista->empyt($data, array('correo','celular','telefono'))){
			extract($data);
		 	if (!$this->Vista->verifica('Cliente', 'documento', $this->Utilitario->mayuscula($this->Interfaz->cedulasinguion($documento)), 'documento')) { 
				$this->Cliente->query('BEGIN WORK');
                $d['Cliente']['tipo_doc']=$tipo_doc;
			    $d['Cliente']['documento']=$this->Utilitario->mayuscula($this->Interfaz->cedulasinguion($documento));
                $d['Cliente']['nombre']=$this->Utilitario->mayuscula($nombre);
                $d['Cliente']['correo']=$this->Utilitario->mayuscula($correo);
                $d['Cliente']['celular']=$celular;
                $d['Cliente']['correo']=$correo;
			    $d['Cliente']['tipo_cliente_id']=$tipo_cliente_id;
                $d['Cliente']['credito']=$credito;
                $d['Cliente']['estado_id']=$estado_id;
                $d['Cliente']['municipio_id']=$municipio_id;
                $d['Cliente']['parroquia_id']=$parroquia_id;
                $d['Cliente']['direccion']=$this->Utilitario->mayuscula($direccion);
                $d['Cliente']['usuario_id']=$this->Interfaz->id($_SESSION['usuario_id']);
                $d['Cliente']['tienda_id']=$tienda_id;
			    $d['Cliente']['estatus']=1;
					if($this->Cliente->save($d)){
						$this->Vista->mensaje("Guardado Exitosamente!!!",'EXITO');

						$this->Cliente->query('COMMIT');
						$this->log();
						$this->Vista->cerrar_ventana($vent);
					}
					else{
						$this->Vista->mensaje("Ocurrio un error actualizando",'ERROR');
						$this->Cliente->query('ROLLBACK');	
					}
			}			
			else
                $this->Vista->mensaje("Documento duplicado", 'ERROR');	
		}		
	    $this->index();
	    $this->render('index');
	}


    public function reporte_excel($formato = 1, $b = 1, $busq = null){
        $condiciones['Cliente.id >'] = '0';
        $condiciones['Cliente.estatus !='] = 0;
        $busq = (strpos($busq, 'menuadmin') === false) ? $busq : '';
        if(!empty($busq)){
            if($b == 2){
                $dataSerializada = $this->serializador($busq, 1); //1 convierte la cadena serializada en un arreglo
                if(is_array($dataSerializada)){
                    extract($dataSerializada);
                    if(!empty($documento))
                        $condiciones['Cliente.documento ILIKE'] = "%$documento%";
                    if(!empty($nombre))
                        $condiciones['Cliente.nombre ILIKE'] = "%$nombre%";
                    if(!empty($codigo)){
                        $condiciones['Cliente.codigo ILIKE'] = "%$codigo%";
                        $condiciones['Cliente.codigo_sap ILIKE'] = "%$codigo%";
                    }
                    if(!empty($tipo_cliente_id))
                        $condiciones['Cliente.tipo_cliente_id'] = $tipo_cliente_id; 
                    if(!empty($credito))
                        $condiciones['Cliente.credito'] = $credito; 
                    if(!empty($estatus)){
                        $condiciones['Cliente.estatus'] = $estatus;
                        unset($condiciones['Cliente.estatus !=']);
                    }
                    if(!empty($estado_id))
                        $condiciones['Cliente.estado_id'] = $estado_id;
                    if(!empty($municipio_id))
                        $condiciones['Cliente.municipio_id'] = $municipio_id;
                    if(!empty($parroquia_id))
                        $condiciones['Cliente.parroquia_id'] = $parroquia_id;       
                    $data = $this->Cliente->find('all', array('conditions' => $condiciones, 'order' => 'Cliente.nombre', 'limit' => '50000'));
                    $this->set('data', $data);
                }
            } else
		$this->_principal_buscador_reporte('Cliente', $busq);
        } else {
            $data = $this->Cliente->find('all', array('conditions' => $condiciones, 'order' => 'Cliente.nombre','limit' => '10000'));
            $this->set('data', $data);
        }
        $this->set('listaEstados',$this->Utilitario->lista_estados()); 
        $this->set('listaMunicipios',$this->Utilitario->lista_municipios());
        $this->set('listaParroquias',$this->Utilitario->lista_parroquias());
        $this->set('formato', $formato);
    }

    public function eliminar($id = null) {
        //$this->permisos_menu_individual('Movimientos de Clientees'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $total = $this->Cliente->find('count', array('conditions' => array("Cliente.estatus" => 0)));
            $this->Cliente->query('BEGIN WORK');
            $data['Cliente']['id'] = $id;
            $data['Cliente']['codigo'] = ++$total;
            $data['Cliente']['estatus'] = 0;
            if ($this->Cliente->save($data)) {
                $this->Cliente->query('COMMIT');
                $this->Vista->mensaje("Eliminado Exitosamente", 'EXITO');
                $this->log();
            } else {
                $this->Cliente->query('ROLLBACK');
                $this->Vista->mensaje("Ocurrio un error Eliminando", 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Cliente Inv&aacute;lido", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
        $this->index();
        $this->render('index');
    }

    public function filtro() {
        $listaTipos = $this->TipoCliente->find('list', array('fields' => 'TipoCliente.id, TipoCliente.nombre', 'conditions' => array('TipoCliente.id >' => '0', 'TipoCliente.estatus' => 1), 'order' => 'TipoCliente.nombre'));     
        $this->set('listaTipos', $listaTipos);   
        $this->set('listaEstados',$this->Utilitario->lista_estados());  
    }
    
    public function buscar_municipio($estado_id=null) {
        $this->set('listaMunicipios',$this->Utilitario->lista_municipios($estado_id));
    }

    public function buscar_parroquia($municipio_id=null) {
        $this->set('listaParroquias',$this->Utilitario->lista_parroquias($municipio_id));
    }

}//class


?>
